import axios from "axios";
import {ElMessage} from "element-plus";
import useUserStore from "@/stores/modules/user.ts";

const request = axios.create({
    baseURL: '/api', // 本地接口基地址
    timeout:20000
})

// 请求拦截器
request.interceptors.request.use((config)=>{
    // 返回配置对象config,headers属性请求头，经常给服务器端携带公共参数
    const userStore = useUserStore()
    if(userStore.token) {
        config.headers.token = userStore.token
    }
    return config
})

//响应拦截器
request.interceptors.response.use((response)=>{
    // 响应成功的回调,返回值即为request.then()中的data
    // 返回简化后的数据
    return response.data
},(error)=>{
    // 响应失败的回调，处理http网络的错误
    let message = ''
    // 响应状态码
    let status = error.response.status
    switch (status) {
        case 401:
            message = "Token过期"
            break;
        case 403:
            message = "无权访问"
            break;
        case 404:
            message = "请求地址错误"
            break;
        case 500:
            message = "服务器问题"
            break;
        default:
            message = "网络问题"
            break;
    }
    // 提示错误信息
    ElMessage({
        type:'error',
        message
    })

    return Promise.reject(error)
})

export default request;